package gui.pessoa;

import excecoes.estoque.DinheiroNegativoException;
import excecoes.pessoa.CpfCnpjExistenteException;
import excecoes.pessoa.LocalizacaoInvalidaException;
import excecoes.pessoa.NomeFantasiaNuloException;
import java.awt.event.ActionEvent;
import java.sql.SQLException;
import excecoes.pessoa.CpfCnpjInvalidoException;
import excecoes.pessoa.NomeInvalidoException;
import banco.pessoa.BancoFornecedor;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import smartMarket.pessoa.Fornecedor;

@SuppressWarnings("serial")
public class JFrameTableCadastroFornecedor extends JFrameTableCadastro {

    private boolean buscar;
    
    // Atributos	
    public JFrameTableCadastroFornecedor() {
        super("Fornecedor");
        listaBanco();

    }
    
    
    private void listaBanco() {

        try {

            BancoFornecedor bancoForn = new BancoFornecedor();
            listaBanco(bancoForn.listar());

        } catch (CpfCnpjInvalidoException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (DinheiroNegativoException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (CpfCnpjExistenteException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (LocalizacaoInvalidaException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NomeFantasiaNuloException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NullPointerException e) {
        } catch (SQLException e) {
        } catch (NomeInvalidoException e) {
        } 
    }

    @Override
    protected void jButtonNovoActionPerformed(ActionEvent evt) {
        if (buscar) {
            limpaBanco();
            listaBanco();
            buscar = false;
        }
       
        new JFrameNovoFornecedor().setVisible(true);
    }

    @Override
    protected void jButtonAlterarActionPerformed(ActionEvent evt) {
        if (buscar) {
            limpaBanco();
            listaBanco();
            buscar = false;
        }
        
        int linha = jTableBanco.getSelectedRow();

        String cnpj = (String) model.getValueAt(linha, 1);

        new JFrameNovoFornecedor(linha, cnpj).setVisible(true);

    }

    @Override
    protected void jButtonExcluirActionPerformed(ActionEvent evt) {
        int linha  = jTableBanco.getSelectedRow();
        int codigo = Integer.parseInt( "" + model.getValueAt(linha, 0) );
        
        try {
            
            BancoFornecedor bf = new BancoFornecedor();
            Fornecedor funcionario = bf.buscar(codigo);
            bf.excluir(funcionario);
            JFrameTableCadastroFuncionario.model.removeRow(linha);
            JOptionPane.showMessageDialog(null, "Fornecedor excluído com sucesso");
        
        } catch (CpfCnpjInvalidoException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (DinheiroNegativoException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (CpfCnpjExistenteException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (LocalizacaoInvalidaException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NomeFantasiaNuloException ex) {
            Logger.getLogger(JFrameTableCadastroFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException SQLe) {
        } catch (NullPointerException npe) {
        } catch (NomeInvalidoException nie) {
        }
    }

    @Override
    protected void jButtonBuscarActionPerformed(ActionEvent evt) {
        limpaBanco();
        buscar = true;
    }
}
